package entities;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;

import dtos.ArticuloDTO;

@Entity
@Table(name = "Articulos")
@Inheritance (strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name = "tipo", discriminatorType = DiscriminatorType.STRING)
public class Articulo implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	protected Integer codigo;
	
	@Column
	protected Integer idModulo;
	
	@Column
	protected String nombre;
	
	@Column
	protected String descripcion;
	
	@Column
	protected String foto;
	
	@Column
	protected String marca;
	
	@Column
	protected float precio;
	
	@Column
	protected String origen;

	@Column
	protected Integer posicion;
	
	
	
//	@Column
//	protected String fichaTecnica;
	
    /**
     * Default constructor. 
     */
    public Articulo() {
    }

	/**
	 * @return the codigo
	 */
	public Integer getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo the codigo to set
	 */
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * @param nombre the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * @return the marca
	 */
	public String getMarca() {
		return marca;
	}

	/**
	 * @param marca the marca to set
	 */
	public void setMarca(String marca) {
		this.marca = marca;
	}

	/**
	 * @return the precio
	 */
	public float getPrecio() {
		return precio;
	}

	/**
	 * @param precio the precio to set
	 */
	public void setPrecio(float precio) {
		this.precio = precio;
	}

	/**
	 * @return the origen
	 */
	public String getOrigen() {
		return origen;
	}

	/**
	 * @param origen the origen to set
	 */
	public void setOrigen(String origen) {
		this.origen = origen;
	}

//	/**
//	 * @return the fichaTecnica
//	 */
//	public String getFichaTecnica() {
//		return fichaTecnica;
//	}
//
//	/**
//	 * @param fichaTecnica the fichaTecnica to set
//	 */
//	public void setFichaTecnica(String fichaTecnica) {
//		this.fichaTecnica = fichaTecnica;
//	}

	/**
	 * @return the codigoDeposito
	 */
	public Integer getIdModulo() {
		return idModulo;
	}

	/**
	 * @param codigoDeposito the codigoDeposito to set
	 */
	public void setIdModulo(Integer codigoDeposito) {
		this.idModulo = codigoDeposito;
	}
	
	public ArticuloDTO instanciateDTO(){
		ArticuloDTO artDTO = new ArticuloDTO();
		artDTO.setCodigoArticulo(this.codigo);
		artDTO.setIdModulo(this.idModulo);
		artDTO.setDescripcion(this.descripcion);
		artDTO.setFotoURL(this.foto);
		artDTO.setMarca(this.marca);
		artDTO.setNombre(this.nombre);
		artDTO.setPrecio(this.precio);
		artDTO.setPosicion(this.posicion);
//		artDTO.setFichaTecnica(this.fichaTecnica);
		
		return artDTO;
	}

	/**
	 * @return the descripcion
	 */
	public String getDescripcion() {
		return descripcion;
	}

	/**
	 * @param descripcion the descripcion to set
	 */
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	/**
	 * @return the foto
	 */
	public String getFoto() {
		return foto;
	}

	/**
	 * @param foto the foto to set
	 */
	public void setFoto(String foto) {
		this.foto = foto;
	}

	public Integer getPosicion() {
		return posicion;
	}

	public void setPosicion(Integer posicion) {
		this.posicion = posicion;
	}
}
